﻿// ***********************************************************************
// Assembly         : Delta_entidad
// Author           : Juan Alberto Cerino Gomez
// Created          : 02-18-2013
//
// Last Modified By : Juan Alberto Cerino Gomez
// Last Modified On : 06-02-2013
// ***********************************************************************
// <copyright file="ITipo.cs" company="Delta Bussines">
//     Copyright (c) 2013  Delta Bussines. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Delta_entidad.EntidadesControl;
using System.Data.SqlTypes;

namespace Delta_entidad.Base
{

    /// <summary>
    /// Interfaz que se usa para los tipos de entidades que se representan en el Delta Grid.
    /// </summary>
    public interface ITipo
    {
        /// <summary>
        /// Metodo que se encarga de asignar un valor a una propiedad de la entidad.
        /// </summary>
        /// <param name="propiedad">Nombre de la propiedad.</param>
        /// <param name="valor">Valor a asignar.</param>
        void FijarValor(string propiedad, object valor);
        /// <summary>
        /// Metodo que se encarga de obtener un valor de una propiedad de la entidad.
        /// </summary>
        /// <typeparam name="T">Tipo de dato, el cual indica el tipo al que se convierte el dato.</typeparam>
        /// <param name="propiedad">Nombre de la propiedad.</param>
        /// <returns>Valor obtenido de la propiedad.</returns>
        T ObtenerValor<T>(string propiedad);
        /// <summary>
        /// Metodo que se encarga de fijar la configuración dinámica a la entidad.
        /// </summary>
        /// <param name="configuracion">Configuración dinámica.</param>
        void FijarConfiguracionDinamica(Cat_tipo_gral configuracion);
        /// <summary>
        /// Obtiene o establece los valores de los campos dinámicos en formato XML.
        /// </summary>
        /// <value>Valores de los campos dinámicos.</value>
        string campos_user{get;set;}
        /// <summary>
        /// Metodo que se encarga de convertir un valor SqlXml a una cadena XML.
        /// </summary>
        /// <param name="fuente">Valor que se obtiene de la base de datos.</param>
        /// <param name="propiedadXML">Propiedad en la cual se coloca la cadena XLM, por default el nombre es "campos_user".</param>
        void BD_a_XML(SqlXml fuente, string propiedadXML = "campos_user");

        /// <summary>
        /// Propiedad que me indica si la entidad es de control, es decir, si la entidad es del Delta Grid, si es asi, entonces se toma la nomenclatura default de nombres de los
        /// procedimientos almacenados.
        /// </summary>
        bool EsEntidadControl{get;}
    }
}
